/*
*所有关于SalesOut类的业务代码接口应在此处编写
*/
using VOL.Core.BaseProvider;
using VOL.Entity.DomainModels;
using VOL.Core.Utilities;
using System.Linq.Expressions;
using VOL.Domain.Dto;

namespace VOL.Domain.IServices
{
    public partial interface ISalesOutService
    {
        /// <summary>
        /// 获取销售出库分页数据
        /// </summary>
        /// <param name="dto">查询条件</param>
        /// <returns>分页数据</returns>
        Task<PageGridData<SalesOut>> GetSalesOutPages(GetSalesOutDto dto);

        /// <summary>
        /// 添加销售出库单
        /// </summary>
        /// <param name="entity">销售出库单实体</param>
        /// <returns>添加结果</returns>
        Task<bool> AddSalesOutAsync(SalesOut entity);

        /// <summary>
        /// 编辑销售出库单
        /// </summary>
        /// <param name="entity">销售出库单实体</param>
        /// <returns>编辑结果</returns>
        Task<bool> UpdateSalesOutAsync(SalesOut entity);

        /// <summary>
        /// 修改销售出库单状态
        /// </summary>
        /// <param name="id">主键ID</param>
        /// <param name="status">新状态</param>
        /// <returns>修改结果</returns>
        Task<bool> UpdateSalesOutStatusAsync(int id, int status);

        /// <summary>
        /// 批量删除销售出库单
        /// </summary>
        /// <param name="ids">待删除的记录ID数组</param>
        /// <returns>操作结果</returns>
        Task<WebResponseContent> BatchDeleteSalesOut(int[] ids);
        
        /// <summary>
        /// 查询客户信息
        /// </summary>
        /// <param name="dto">查询条件</param>
        /// <returns>客户列表</returns>
        Task<PageGridData<Customer>> GetCustomerList(GetCustomerDto dto);
    }
}
